package pe.com.ztaxi.taxis.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import pe.com.ztaxi.taxis.model.OrdenServicio;
import pe.com.ztaxi.taxis.model.UnidadMovil;
import pe.com.ztaxi.taxis.service.OrdenServicioService;
import pe.com.ztaxi.taxis.service.PasajeroService;
import pe.com.ztaxi.taxis.service.UnidadMovilService;

@PreAuthorize("hasRole('ROLE_ADMIN')") 
@Controller
public class AsignarServicioController {

	@Autowired
	private OrdenServicioService ordenServicioService;
	
	@Autowired
	private UnidadMovilService unidadMovilService;
	
	@Autowired
	private PasajeroService pasajeroService;
	
	@RequestMapping(value = "/asignarUnidad", method = RequestMethod.GET)
	public String getAsignarUnidad(@RequestParam(value = "numeroOrden") Integer numeroOrden, OrdenServicio ordenServicio, Model model) {
		OrdenServicio orden = ordenServicioService.buscarPorCodigo(numeroOrden);
		model.addAttribute("ordenServicio", orden);
		model.addAttribute("opcionMenu","ReservarServicio");
		model.addAttribute("pasajero", orden.getPasajero());
		return "asignarUnidad";
	}
	
	@RequestMapping(value = "/getUnidadesCercanas/{codigoOrden}", method = RequestMethod.GET)
	public String getUnidadesCercanas(@PathVariable("codigoOrden") Integer codigoOrden, Model model){
		OrdenServicio orden = ordenServicioService.buscarPorCodigo(codigoOrden);
		List<UnidadMovil> unidades = unidadMovilService.buscarUnidadesCercanas(orden);
		model.addAttribute("unidades", unidades);
		return "ajaxAsignarUnidad-seleccionar";		
	}
	
	@RequestMapping(value = "/seleccionarUnidad/{codigoUnidad}", method = RequestMethod.GET)
	public String seleccionarUnidad(@PathVariable("codigoUnidad") Integer codigoUnidad, Model model){
		UnidadMovil unidad = unidadMovilService.buscarPorCodigo(codigoUnidad);
		model.addAttribute("unidadMovil", unidad);
		return "ajaxAsignarUnidad-unidad";	
	}
	
	@RequestMapping(value = "/asignarUnidad", method = RequestMethod.POST)
	public String postAsignarUnidad(@RequestParam(value = "codigoOrden") Integer codigoOrden, @RequestParam(value = "codigoUnidad") Integer codigoUnidad, Model model) {
		OrdenServicio orden = ordenServicioService.buscarPorCodigo(codigoOrden);
		UnidadMovil unidad = unidadMovilService.buscarPorCodigo(codigoUnidad);
		ordenServicioService.asignarUnidad(orden, unidad);
		return "redirect:/serviciosRecientes?mensaje=asignada";
	}
}
